home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_tempfile.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  19KB  |  642 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. import tempfile
  5. import os
  6. import sys
  7. import re
  8. import errno
  9. import warnings
  10. import unittest
  11. from test import test_support
  12. warnings.filterwarnings('ignore', category = RuntimeWarning, message = 'mktemp', module = __name__)
  13. if hasattr(os, 'stat'):
  14.     import stat
  15.     has_stat = 1
  16. else:
  17.     has_stat = 0
  18. has_textmode = tempfile._text_openflags != tempfile._bin_openflags
  19. has_spawnl = hasattr(os, 'spawnl')
  20. if sys.platform == 'mac':
  21.     TEST_FILES = 32
  22. elif sys.platform == 'openbsd3':
  23.     TEST_FILES = 48
  24. else:
  25.     TEST_FILES = 100
  26.  
  27. class TC(unittest.TestCase):
  28.     str_check = re.compile('[a-zA-Z0-9_-]{6}$')
  29.     
  30.     def failOnException(self, what, ei = None):
  31.         if ei is None:
  32.             ei = sys.exc_info()
  33.         
  34.         self.fail('%s raised %s: %s' % (what, ei[0], ei[1]))
  35.  
  36.     
  37.     def nameCheck(self, name, dir, pre, suf):
  38.         (ndir, nbase) = os.path.split(name)
  39.         npre = nbase[:len(pre)]
  40.         nsuf = nbase[len(nbase) - len(suf):]
  41.         self.assertEqual(os.path.abspath(ndir), os.path.abspath(dir), "file '%s' not in directory '%s'" % (name, dir))
  42.         self.assertEqual(npre, pre, "file '%s' does not begin with '%s'" % (nbase, pre))
  43.         self.assertEqual(nsuf, suf, "file '%s' does not end with '%s'" % (nbase, suf))
  44.         nbase = nbase[len(pre):len(nbase) - len(suf)]
  45.         self.assert_(self.str_check.match(nbase), "random string '%s' does not match /^[a-zA-Z0-9_-]{6}$/" % nbase)
  46.  
  47.  
  48. test_classes = []
  49.  
  50. class test_exports(TC):
  51.     
  52.     def test_exports(self):
  53.         dict = tempfile.__dict__
  54.         expected = {
  55.             'NamedTemporaryFile': 1,
  56.             'TemporaryFile': 1,
  57.             'mkstemp': 1,
  58.             'mkdtemp': 1,
  59.             'mktemp': 1,
  60.             'TMP_MAX': 1,
  61.             'gettempprefix': 1,
  62.             'gettempdir': 1,
  63.             'tempdir': 1,
  64.             'template': 1 }
  65.         unexp = []
  66.         for key in dict:
  67.             if key[0] != '_' and key not in expected:
  68.                 unexp.append(key)
  69.                 continue
  70.         
  71.         self.failUnless(len(unexp) == 0, 'unexpected keys: %s' % unexp)
  72.  
  73.  
  74. test_classes.append(test_exports)
  75.  
  76. class test__RandomNameSequence(TC):
  77.     '''Test the internal iterator object _RandomNameSequence.'''
  78.     
  79.     def setUp(self):
  80.         self.r = tempfile._RandomNameSequence()
  81.  
  82.     
  83.     def test_get_six_char_str(self):
  84.         s = self.r.next()
  85.         self.nameCheck(s, '', '', '')
  86.  
  87.     
  88.     def test_many(self):
  89.         dict = { }
  90.         r = self.r
  91.         for i in xrange(TEST_FILES):
  92.             s = r.next()
  93.             self.nameCheck(s, '', '', '')
  94.             self.failIf(s in dict)
  95.             dict[s] = 1
  96.         
  97.  
  98.     
  99.     def test_supports_iter(self):
  100.         i = 0
  101.         r = self.r
  102.         
  103.         try:
  104.             for s in r:
  105.                 i += 1
  106.                 if i == 20:
  107.                     break
  108.                     continue
  109.         except:
  110.             failOnException('iteration')
  111.  
  112.  
  113.  
  114. test_classes.append(test__RandomNameSequence)
  115.  
  116. class test__candidate_tempdir_list(TC):
  117.     '''Test the internal function _candidate_tempdir_list.'''
  118.     
  119.     def test_nonempty_list(self):
  120.         cand = tempfile._candidate_tempdir_list()
  121.         self.failIf(len(cand) == 0)
  122.         for c in cand:
  123.             self.assert_(isinstance(c, basestring), '%s is not a string' % c)
  124.         
  125.  
  126.     
  127.     def test_wanted_dirs(self):
  128.         added = []
  129.         
  130.         try:
  131.             for envname in ('TMPDIR', 'TEMP', 'TMP'):
  132.                 dirname = os.getenv(envname)
  133.                 if not dirname:
  134.                     os.environ[envname] = os.path.abspath(envname)
  135.                     added.append(envname)
  136.                     continue
  137.             
  138.             cand = tempfile._candidate_tempdir_list()
  139.             for envname in ('TMPDIR', 'TEMP', 'TMP'):
  140.                 dirname = os.getenv(envname)
  141.                 if not dirname:
  142.                     raise ValueError
  143.                 
  144.                 self.assert_(dirname in cand)
  145.             
  146.             
  147.             try:
  148.                 dirname = os.getcwd()
  149.             except (AttributeError, os.error):
  150.                 dirname = os.curdir
  151.  
  152.             self.assert_(dirname in cand)
  153.         finally:
  154.             for p in added:
  155.                 del os.environ[p]
  156.             
  157.  
  158.  
  159.  
  160. test_classes.append(test__candidate_tempdir_list)
  161.  
  162. class test__get_candidate_names(TC):
  163.     '''Test the internal function _get_candidate_names.'''
  164.     
  165.     def test_retval(self):
  166.         obj = tempfile._get_candidate_names()
  167.         self.assert_(isinstance(obj, tempfile._RandomNameSequence))
  168.  
  169.     
  170.     def test_same_thing(self):
  171.         a = tempfile._get_candidate_names()
  172.         b = tempfile._get_candidate_names()
  173.         self.assert_(a is b)
  174.  
  175.  
  176. test_classes.append(test__get_candidate_names)
  177.  
  178. class test__mkstemp_inner(TC):
  179.     '''Test the internal function _mkstemp_inner.'''
  180.     
  181.     class mkstemped:
  182.         _bflags = tempfile._bin_openflags
  183.         _tflags = tempfile._text_openflags
  184.         _close = os.close
  185.         _unlink = os.unlink
  186.         
  187.         def __init__(self, dir, pre, suf, bin):
  188.             if bin:
  189.                 flags = self._bflags
  190.             else:
  191.                 flags = self._tflags
  192.             (self.fd, self.name) = tempfile._mkstemp_inner(dir, pre, suf, flags)
  193.  
  194.         
  195.         def write(self, str):
  196.             os.write(self.fd, str)
  197.  
  198.         
  199.         def __del__(self):
  200.             self._close(self.fd)
  201.             self._unlink(self.name)
  202.  
  203.  
  204.     
  205.     def do_create(self, dir = None, pre = '', suf = '', bin = 1):
  206.         if dir is None:
  207.             dir = tempfile.gettempdir()
  208.         
  209.         
  210.         try:
  211.             file = self.mkstemped(dir, pre, suf, bin)
  212.         except:
  213.             self.failOnException('_mkstemp_inner')
  214.  
  215.         self.nameCheck(file.name, dir, pre, suf)
  216.         return file
  217.  
  218.     
  219.     def test_basic(self):
  220.         self.do_create().write('blat')
  221.         self.do_create(pre = 'a').write('blat')
  222.         self.do_create(suf = 'b').write('blat')
  223.         self.do_create(pre = 'a', suf = 'b').write('blat')
  224.         self.do_create(pre = 'aa', suf = '.txt').write('blat')
  225.  
  226.     
  227.     def test_basic_many(self):
  228.         extant = range(TEST_FILES)
  229.         for i in extant:
  230.             extant[i] = self.do_create(pre = 'aa')
  231.         
  232.  
  233.     
  234.     def test_choose_directory(self):
  235.         dir = tempfile.mkdtemp()
  236.         
  237.         try:
  238.             self.do_create(dir = dir).write('blat')
  239.         finally:
  240.             os.rmdir(dir)
  241.  
  242.  
  243.     
  244.     def test_file_mode(self):
  245.         if not has_stat:
  246.             return None
  247.         
  248.         file = self.do_create()
  249.         mode = stat.S_IMODE(os.stat(file.name).st_mode)
  250.         expected = 384
  251.         if sys.platform in ('win32', 'os2emx', 'mac'):
  252.             user = expected >> 6
  253.             expected = user * (1 + 8 + 64)
  254.         
  255.         self.assertEqual(mode, expected)
  256.  
  257.     
  258.     def test_noinherit(self):
  259.         if not has_spawnl:
  260.             return None
  261.         
  262.         if test_support.verbose:
  263.             v = 'v'
  264.         else:
  265.             v = 'q'
  266.         file = self.do_create()
  267.         fd = '%d' % file.fd
  268.         
  269.         try:
  270.             me = __file__
  271.         except NameError:
  272.             me = sys.argv[0]
  273.  
  274.         tester = os.path.join(os.path.dirname(os.path.abspath(me)), 'tf_inherit_check.py')
  275.         if sys.platform in 'win32':
  276.             decorated = '"%s"' % sys.executable
  277.             tester = '"%s"' % tester
  278.         else:
  279.             decorated = sys.executable
  280.         retval = os.spawnl(os.P_WAIT, sys.executable, decorated, tester, v, fd)
  281.         self.failIf(retval < 0, 'child process caught fatal signal %d' % -retval)
  282.         self.failIf(retval > 0, 'child process reports failure')
  283.  
  284.     
  285.     def test_textmode(self):
  286.         if not has_textmode:
  287.             return None
  288.         
  289.         self.do_create(bin = 0).write('blat\n')
  290.  
  291.  
  292. test_classes.append(test__mkstemp_inner)
  293.  
  294. class test_gettempprefix(TC):
  295.     '''Test gettempprefix().'''
  296.     
  297.     def test_sane_template(self):
  298.         p = tempfile.gettempprefix()
  299.         self.assert_(isinstance(p, basestring))
  300.         self.assert_(len(p) > 0)
  301.  
  302.     
  303.     def test_usable_template(self):
  304.         p = tempfile.gettempprefix() + 'xxxxxx.xxx'
  305.         d = tempfile.mkdtemp(prefix = '')
  306.         
  307.         try:
  308.             p = os.path.join(d, p)
  309.             
  310.             try:
  311.                 fd = os.open(p, os.O_RDWR | os.O_CREAT)
  312.             except:
  313.                 self.failOnException('os.open')
  314.  
  315.             os.close(fd)
  316.             os.unlink(p)
  317.         finally:
  318.             os.rmdir(d)
  319.  
  320.  
  321.  
  322. test_classes.append(test_gettempprefix)
  323.  
  324. class test_gettempdir(TC):
  325.     '''Test gettempdir().'''
  326.     
  327.     def test_directory_exists(self):
  328.         dir = tempfile.gettempdir()
  329.         if not os.path.isabs(dir):
  330.             pass
  331.         self.assert_(dir == os.curdir, '%s is not an absolute path' % dir)
  332.         self.assert_(os.path.isdir(dir), '%s is not a directory' % dir)
  333.  
  334.     
  335.     def test_directory_writable(self):
  336.         
  337.         try:
  338.             file = tempfile.NamedTemporaryFile()
  339.             file.write('blat')
  340.             file.close()
  341.         except:
  342.             self.failOnException('create file in %s' % tempfile.gettempdir())
  343.  
  344.  
  345.     
  346.     def test_same_thing(self):
  347.         a = tempfile.gettempdir()
  348.         b = tempfile.gettempdir()
  349.         self.assert_(a is b)
  350.  
  351.  
  352. test_classes.append(test_gettempdir)
  353.  
  354. class test_mkstemp(TC):
  355.     '''Test mkstemp().'''
  356.     
  357.     def do_create(self, dir = None, pre = '', suf = ''):
  358.         if dir is None:
  359.             dir = tempfile.gettempdir()
  360.         
  361.         
  362.         try:
  363.             (fd, name) = tempfile.mkstemp(dir = dir, prefix = pre, suffix = suf)
  364.             (ndir, nbase) = os.path.split(name)
  365.             adir = os.path.abspath(dir)
  366.             self.assertEqual(adir, ndir, "Directory '%s' incorrectly returned as '%s'" % (adir, ndir))
  367.         except:
  368.             self.failOnException('mkstemp')
  369.  
  370.         
  371.         try:
  372.             self.nameCheck(name, dir, pre, suf)
  373.         finally:
  374.             os.close(fd)
  375.             os.unlink(name)
  376.  
  377.  
  378.     
  379.     def test_basic(self):
  380.         self.do_create()
  381.         self.do_create(pre = 'a')
  382.         self.do_create(suf = 'b')
  383.         self.do_create(pre = 'a', suf = 'b')
  384.         self.do_create(pre = 'aa', suf = '.txt')
  385.         self.do_create(dir = '.')
  386.  
  387.     
  388.     def test_choose_directory(self):
  389.         dir = tempfile.mkdtemp()
  390.         
  391.         try:
  392.             self.do_create(dir = dir)
  393.         finally:
  394.             os.rmdir(dir)
  395.  
  396.  
  397.  
  398. test_classes.append(test_mkstemp)
  399.  
  400. class test_mkdtemp(TC):
  401.     '''Test mkdtemp().'''
  402.     
  403.     def do_create(self, dir = None, pre = '', suf = ''):
  404.         if dir is None:
  405.             dir = tempfile.gettempdir()
  406.         
  407.         
  408.         try:
  409.             name = tempfile.mkdtemp(dir = dir, prefix = pre, suffix = suf)
  410.         except:
  411.             self.failOnException('mkdtemp')
  412.  
  413.         
  414.         try:
  415.             self.nameCheck(name, dir, pre, suf)
  416.             return name
  417.         except:
  418.             os.rmdir(name)
  419.             raise 
  420.  
  421.  
  422.     
  423.     def test_basic(self):
  424.         os.rmdir(self.do_create())
  425.         os.rmdir(self.do_create(pre = 'a'))
  426.         os.rmdir(self.do_create(suf = 'b'))
  427.         os.rmdir(self.do_create(pre = 'a', suf = 'b'))
  428.         os.rmdir(self.do_create(pre = 'aa', suf = '.txt'))
  429.  
  430.     
  431.     def test_basic_many(self):
  432.         extant = range(TEST_FILES)
  433.         
  434.         try:
  435.             for i in extant:
  436.                 extant[i] = self.do_create(pre = 'aa')
  437.         finally:
  438.             for i in extant:
  439.                 if isinstance(i, basestring):
  440.                     os.rmdir(i)
  441.                     continue
  442.             
  443.  
  444.  
  445.     
  446.     def test_choose_directory(self):
  447.         dir = tempfile.mkdtemp()
  448.         
  449.         try:
  450.             os.rmdir(self.do_create(dir = dir))
  451.         finally:
  452.             os.rmdir(dir)
  453.  
  454.  
  455.     
  456.     def test_mode(self):
  457.         if not has_stat:
  458.             return None
  459.         
  460.         dir = self.do_create()
  461.         
  462.         try:
  463.             mode = stat.S_IMODE(os.stat(dir).st_mode)
  464.             mode &= 511
  465.             expected = 448
  466.             if sys.platform in ('win32', 'os2emx', 'mac'):
  467.                 user = expected >> 6
  468.                 expected = user * (1 + 8 + 64)
  469.             
  470.             self.assertEqual(mode, expected)
  471.         finally:
  472.             os.rmdir(dir)
  473.  
  474.  
  475.  
  476. test_classes.append(test_mkdtemp)
  477.  
  478. class test_mktemp(TC):
  479.     '''Test mktemp().'''
  480.     
  481.     def setUp(self):
  482.         self.dir = tempfile.mkdtemp()
  483.  
  484.     
  485.     def tearDown(self):
  486.         if self.dir:
  487.             os.rmdir(self.dir)
  488.             self.dir = None
  489.         
  490.  
  491.     
  492.     class mktemped:
  493.         _unlink = os.unlink
  494.         _bflags = tempfile._bin_openflags
  495.         
  496.         def __init__(self, dir, pre, suf):
  497.             self.name = tempfile.mktemp(dir = dir, prefix = pre, suffix = suf)
  498.             os.close(os.open(self.name, self._bflags, 384))
  499.  
  500.         
  501.         def __del__(self):
  502.             self._unlink(self.name)
  503.  
  504.  
  505.     
  506.     def do_create(self, pre = '', suf = ''):
  507.         
  508.         try:
  509.             file = self.mktemped(self.dir, pre, suf)
  510.         except:
  511.             self.failOnException('mktemp')
  512.  
  513.         self.nameCheck(file.name, self.dir, pre, suf)
  514.         return file
  515.  
  516.     
  517.     def test_basic(self):
  518.         self.do_create()
  519.         self.do_create(pre = 'a')
  520.         self.do_create(suf = 'b')
  521.         self.do_create(pre = 'a', suf = 'b')
  522.         self.do_create(pre = 'aa', suf = '.txt')
  523.  
  524.     
  525.     def test_many(self):
  526.         extant = range(TEST_FILES)
  527.         for i in extant:
  528.             extant[i] = self.do_create(pre = 'aa')
  529.         
  530.  
  531.  
  532. test_classes.append(test_mktemp)
  533.  
  534. class test_NamedTemporaryFile(TC):
  535.     '''Test NamedTemporaryFile().'''
  536.     
  537.     def do_create(self, dir = None, pre = '', suf = ''):
  538.         if dir is None:
  539.             dir = tempfile.gettempdir()
  540.         
  541.         
  542.         try:
  543.             file = tempfile.NamedTemporaryFile(dir = dir, prefix = pre, suffix = suf)
  544.         except:
  545.             self.failOnException('NamedTemporaryFile')
  546.  
  547.         self.nameCheck(file.name, dir, pre, suf)
  548.         return file
  549.  
  550.     
  551.     def test_basic(self):
  552.         self.do_create()
  553.         self.do_create(pre = 'a')
  554.         self.do_create(suf = 'b')
  555.         self.do_create(pre = 'a', suf = 'b')
  556.         self.do_create(pre = 'aa', suf = '.txt')
  557.  
  558.     
  559.     def test_creates_named(self):
  560.         f = tempfile.NamedTemporaryFile()
  561.         self.failUnless(os.path.exists(f.name), 'NamedTemporaryFile %s does not exist' % f.name)
  562.  
  563.     
  564.     def test_del_on_close(self):
  565.         dir = tempfile.mkdtemp()
  566.         
  567.         try:
  568.             f = tempfile.NamedTemporaryFile(dir = dir)
  569.             f.write('blat')
  570.             f.close()
  571.             self.failIf(os.path.exists(f.name), 'NamedTemporaryFile %s exists after close' % f.name)
  572.         finally:
  573.             os.rmdir(dir)
  574.  
  575.  
  576.     
  577.     def test_multiple_close(self):
  578.         f = tempfile.NamedTemporaryFile()
  579.         f.write('abc\n')
  580.         f.close()
  581.         
  582.         try:
  583.             f.close()
  584.             f.close()
  585.         except:
  586.             self.failOnException('close')
  587.  
  588.  
  589.  
  590. test_classes.append(test_NamedTemporaryFile)
  591.  
  592. class test_TemporaryFile(TC):
  593.     '''Test TemporaryFile().'''
  594.     
  595.     def test_basic(self):
  596.         
  597.         try:
  598.             tempfile.TemporaryFile()
  599.         except:
  600.             self.failOnException('TemporaryFile')
  601.  
  602.  
  603.     
  604.     def test_has_no_name(self):
  605.         dir = tempfile.mkdtemp()
  606.         f = tempfile.TemporaryFile(dir = dir)
  607.         f.write('blat')
  608.         
  609.         try:
  610.             os.rmdir(dir)
  611.         except:
  612.             ei = sys.exc_info()
  613.             f.close()
  614.             os.rmdir(dir)
  615.             self.failOnException('rmdir', ei)
  616.  
  617.  
  618.     
  619.     def test_multiple_close(self):
  620.         f = tempfile.TemporaryFile()
  621.         f.write('abc\n')
  622.         f.close()
  623.         
  624.         try:
  625.             f.close()
  626.             f.close()
  627.         except:
  628.             self.failOnException('close')
  629.  
  630.  
  631.  
  632. if tempfile.NamedTemporaryFile is not tempfile.TemporaryFile:
  633.     test_classes.append(test_TemporaryFile)
  634.  
  635.  
  636. def test_main():
  637.     test_support.run_unittest(*test_classes)
  638.  
  639. if __name__ == '__main__':
  640.     test_main()
  641.  
  642.